package com.dimples.dd.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.dimples.dd.common.pojo.PageResult;
import com.dimples.dd.system.model.entity.SystemNoticeDO;
import com.dimples.dd.system.model.form.NoticeForm;
import com.dimples.dd.system.model.query.NoticePageQuery;
import com.dimples.dd.system.model.vo.NoticeDetailVO;
import com.dimples.dd.system.model.vo.NoticePageVO;
import com.dimples.dd.system.model.vo.UserNoticePageVO;

/**
 * @author zhongyj <1126834403@qq.com><br/>
 * @date 2024/12/27
 */
public interface SystemNoticeService extends IService<SystemNoticeDO> {

    /**
     * 通知公告分页列表
     *
     * @return 通知公告分页列表
     */
    PageResult<NoticePageVO> selectNoticePage(NoticePageQuery queryParams);

    /**
     * 获取通知公告表单数据
     *
     * @param id 通知公告ID
     * @return 通知公告表单对象
     */
    NoticeForm selectNoticeFormData(Long id);

    /**
     * 新增通知公告
     *
     * @param formData 通知公告表单对象
     * @return 是否新增成功
     */
    boolean createNotice(NoticeForm formData);

    /**
     * 修改通知公告
     *
     * @param id       通知公告ID
     * @param formData 通知公告表单对象
     * @return 是否修改成功
     */
    boolean updateNotice(Long id, NoticeForm formData);

    /**
     * 删除通知公告
     *
     * @param ids 通知公告ID，多个以英文逗号(,)分割
     * @return 是否删除成功
     */
    boolean deleteNotices(String ids);

    /**
     * 发布通知公告
     *
     * @param id 通知公告ID
     * @return 是否发布成功
     */
    boolean publishNotice(Long id);

    /**
     * 撤回通知公告
     *
     * @param id 通知公告ID
     * @return 是否撤回成功
     */
    boolean revokeNotice(Long id);

    /**
     * 阅读获取通知公告详情
     *
     * @param id 通知公告ID
     * @return 通知公告详情
     */
    NoticeDetailVO selectNoticeDetail(Long id);

    /**
     * 获取我的通知公告分页列表
     *
     * @param queryParams 查询参数
     * @return 通知公告分页列表
     */
    PageResult<UserNoticePageVO> selectMyNoticePage(NoticePageQuery queryParams);


}
